home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctj8409.arc / MACROS.ASM < prev    next >
Assembly Source File  |  1986-09-14  |  12KB  |  461 lines

  1.  
  2. ..HEAD01LPC Macros for Structured Programming               PAGE ##
  3. ..PGNO22
  4. PC Macros for Structured Programming              PAGE 22
  5.  
  6.  
  7. INITDOIF MACRO
  8.          ?CTD=0
  9.          ?CTE=0
  10.          ?CT2X=0
  11.          ?CT3X=0
  12.          ?CT4X=0
  13.          ?S1 = 0
  14.          ?S2 = 0
  15.          ?S3 = 0
  16.          ?S4 = 0
  17.          ?CTI=0
  18.          ?CTI2X=0
  19.          ?CTI3X=0
  20.          ?CTI4X=0
  21.          ?SI1 = 0
  22.          ?SI2 = 0
  23.          ?SI3 = 0
  24.          ?SI4 = 0
  25.          ENDM
  26. ..PAGE
  27. IFM      MACRO P1,P2,P3,P4,O1,P5,P6,P7,P8,O2,P9,P10,P11,P12
  28.          ?CTA = 0
  29.          ?CTI = ?CTI + 1
  30.          IFE ?SI1
  31.              ?CTI1 = ?CTI
  32.          ELSE
  33.              IFE ?SI2
  34.                 IFE ?CTI2X
  35.                    ?CTI2 = ?CTI
  36.                    ?CTI2X = 1
  37.                 ELSE
  38.                    ?CTI2 = ?CTI2 +1
  39.                    ?CTI2X = ?CTI2X +1
  40.                 ENDIF
  41.              ELSE
  42.                 IFE ?SI3
  43.                    IFE ?CTI3X
  44.                       ?CTI3 = ?CTI
  45.                       ?CTI3X = 1
  46.                    ELSE
  47.                       ?CTI3 = ?CTI3 +1
  48.                       ?CTI3X = ?CTI3X +1
  49.                    ENDIF
  50.                 ELSE
  51.                    IFE ?SI4
  52.                       IFE ?CTI4X
  53.                          ?CTI4 = ?CTI
  54.                          ?CTI4X = 1
  55.                       ELSE
  56.                          ?CTI4 = ?CTI4 +1
  57.                          ?CTI4X = ?CTI4X +1
  58.                       ENDIF
  59.                    ELSE
  60.                       MJMP MP,?IFERR
  61.                    ENDIF
  62.                 ENDIF
  63.              ENDIF
  64.          ENDIF
  65.          IFB <P2>
  66.             MJMP  P1,?IF,%?CTI
  67.             MJMP  MP,?IS,%?CTI
  68.             MLBL  ?IF,%?CTI
  69.          ELSE
  70.             P1    P2,P4
  71.             IFIDN <O1>,<AND>
  72.                MJMP  P3,?IA,%?CTI,%?CTA
  73.                MJMP  MP,?IS,%?CTI
  74.                MLBL  ?IA,%?CTI,%?CTA
  75.                ?CTA  =  ?CTA + 1
  76.                P5    P6,P8
  77.                MJMP  P7,?IA,%?CTI,%?CTA
  78.                MJMP  MP,?IS,%?CTI
  79.                MLBL  ?IA,%?CTI,%?CTA
  80.                ?CTA  = ?CTA + 1
  81.                IFIDN <O2>,<AND>
  82.                   P9    P10,P12
  83.                   MJMP  P11,?IF,%?CTI
  84.                   MJMP  MP,?IS,%?CTI
  85.                ENDIF
  86.                MLBL  ?IF,%?CTI
  87.             ELSE
  88.                MJMP  P3,?IF,%?CTI
  89.                IFIDN <O1>,<OR>
  90.                   P5    P6,P8
  91.                   MJMP  P7,?IF,%?CTI
  92.                   IFIDN <O2>,<OR>
  93.                      P9    P10,P12
  94.                      MJMP  P11,?IF,%?CTI
  95.                   ENDIF
  96.                ENDIF
  97.                MJMP  MP,?IS,%?CTI
  98.                MLBL  ?IF,%?CTI
  99.             ENDIF
  100.          ENDIF
  101.          ENDM
  102. ..PAGE
  103. ELSEM    MACRO
  104.          IFE ?CTI2X
  105.              ?CTX = ?CTI1
  106.          ELSE
  107.              IFE ?CTI3X
  108.                 ?CTX = ?CTI2
  109.              ELSE
  110.                 IFE ?CTI4X
  111.                    ?CTX = ?CTI3
  112.                 ELSE
  113.                    ?CTX = ?CTI4
  114.                 ENDIF
  115.              ENDIF
  116.          ENDIF
  117.          MJMP  MP,?IE,%?CTX
  118.          MLBL  ?IS,%?CTX
  119.          ENDM
  120. ..PAGE
  121. ENDIFM   MACRO
  122.          IFE ?CTI2X
  123.              MALTLB ?IS,%?CTI1,?IE
  124.              ?CTI1 = ?CTI1 - 1
  125.              ?SI1 = 1
  126.              IFE  ?CTI1
  127.                 ?SI1 = 0
  128.              ENDIF
  129.          ELSE
  130.              IFE ?CTI3X
  131.                 MALTLB ?IS,%?CTI2,?IE
  132.                 ?CTI2 = ?CTI2 - 1
  133.                 ?CTI2X = ?CTI2X - 1
  134.                 ?SI2 = 1
  135.                 IFE ?CTI2X
  136.                    ?SI2 = 0
  137.                 ENDIF
  138.              ELSE
  139.                 IFE ?CTI4X
  140.                    MALTLB ?IS,%?CTI3,?IE
  141.                    ?CTI3 = ?CTI3 - 1
  142.                    ?CTI3X = ?CTI3X - 1
  143.                    ?SI3 = 1
  144.                    IFE ?CTI3X
  145.                       ?SI3 = 0
  146.                    ENDIF
  147.                 ELSE
  148.                    MALTLB ?IS,%?CTI4,?IE
  149.                    ?CTI4 = ?CTI4 - 1
  150.                    ?CTI4X = ?CTI4X - 1
  151.                    ?SI4 = 1
  152.                    IFE ?CTI4X
  153.                       ?SI4 = 0
  154.                    ENDIF
  155.                 ENDIF
  156.              ENDIF
  157.          ENDIF
  158.          ENDM
  159. ..PAGE
  160. DO       MACRO TYP1,P1,P2,P3,P4
  161.          ?CTD = ?CTD + 1
  162.          IFE ?S1
  163.              ?CT1 = ?CTD
  164.          ELSE
  165.              IFE ?S2
  166.                 IFE ?CT2X
  167.                    ?CT2 = ?CTD
  168.                    ?CT2X = 1
  169.                 ELSE
  170.                    ?CT2 = ?CT2 +1
  171.                    ?CT2X = ?CT2X +1
  172.                 ENDIF
  173.              ELSE
  174.                 IFE ?S3
  175.                    IFE ?CT3X
  176.                       ?CT3 = ?CTD
  177.                       ?CT3X = 1
  178.                    ELSE
  179.                       ?CT3 = ?CT3 +1
  180.                       ?CT3X = ?CT3X +1
  181.                    ENDIF
  182.                 ELSE
  183.                    IFE ?S4
  184.                       IFE ?CT4X
  185.                          ?CT4 = ?CTD
  186.                          ?CT4X = 1
  187.                       ELSE
  188.                          ?CT4 = ?CT4 +1
  189.                          ?CT4X = ?CT4X +1
  190.                       ENDIF
  191.                    ELSE
  192.                       MJMP MP,?DOERR
  193.                    ENDIF
  194.                 ENDIF
  195.              ENDIF
  196.          ENDIF
  197.          IFIDN <TYP1>,<INF>
  198.             MLBL  ?DW,%?CTD
  199.          ELSE
  200.          IFIDN <TYP1>,<WHILE>
  201.             MLBL  ?DW,%?CTD
  202.             P1    P2,P4
  203.             MJMP  P3,?DL,%?CTD
  204.             MJMP  MP,?DE,%?CTD
  205.             MLBL  ?DL,%?CTD
  206.          ELSE
  207.          IFIDN <TYP1>,<UNTIL>
  208.             MLBL  ?DW,%?CTD
  209.             P1    P2,P4
  210.             MJMPN P3,?DL,%?CTD
  211.             MJMP  MP,?DE,%?CTD
  212.             MLBL  ?DL,%?CTD
  213.          ELSE
  214.          IFIDN <TYP1>,<FROM>
  215.             IFNB <P2>
  216.                MOV   P1,P2
  217.             ENDIF
  218.             MLBL  ?DW,%?CTD
  219.             IFNB  <P3>
  220.                SUB   P1,P3
  221.             ELSE
  222.                DEC   P1
  223.             ENDIF
  224.             IFNB <P4>
  225.                CMP   P1,P4
  226.             ENDIF
  227.             MJMP  GE,?DL,%?CTD
  228.             MJMP  MP,?DE,%?CTD
  229.             MLBL  ?DL,%?CTD
  230.          ELSE
  231.          MJMP  MP,?BADDO,%?CTD
  232.          ENDIF
  233.          ENDIF
  234.          ENDIF
  235.          ENDIF
  236.          ENDM
  237. ..PAGE
  238. DOEXIT   MACRO P1,P2,P3,P4
  239.          IFE ?CT2X
  240.              ?CTX = ?CT1
  241.          ELSE
  242.              IFE ?CT3X
  243.                 ?CTX = ?CT2
  244.              ELSE
  245.                 IFE ?CT4X
  246.                    ?CTX = ?CT3
  247.                 ELSE
  248.                    ?CTX = ?CT4
  249.                 ENDIF
  250.              ENDIF
  251.          ENDIF
  252.          IFB <P1>
  253.              MJMP  MP,?DE,%?CTX
  254.          ELSE
  255.          IFB <P2>
  256.             MJMPN P1,?DX,%?CTX,%?CTE
  257.             MJMP  MP,?DE,%?CTX
  258.             MLBL  ?DX,%?CTX,%?CTE
  259.             ?CTE  = ?CTE +1
  260.          ELSE
  261.             P1    P2,P4
  262.             MJMPN P3,?DX,%?CTX,%?CTE
  263.             MJMP  MP,?DE,%?CTX
  264.             MLBL  ?DX,%?CTX,%?CTE
  265.             ?CTE  = ?CTE +1
  266.          ENDIF
  267.          ENDIF
  268.          ENDM
  269. ..PAGE
  270. ENDDO    MACRO
  271.          IFE ?CT2X
  272.              MJMP MP,?DW,%?CT1
  273.              MLBL ?DE,%?CT1
  274.              ?CT1 = ?CT1 - 1
  275.              ?S1 = 1
  276.              IFE  ?CT1
  277.                 ?S1 = 0
  278.                 ?CTE = 0
  279.              ENDIF
  280.          ELSE
  281.              IFE ?CT3X
  282.                 MJMP MP,?DW,%?CT2
  283.                 MLBL ?DE,%?CT2
  284.                 ?CT2 = ?CT2 - 1
  285.                 ?CT2X = ?CT2X - 1
  286.                 ?S2 = 1
  287.                 IFE ?CT2X
  288.                    ?S2 = 0
  289.                 ENDIF
  290.              ELSE
  291.                 IFE ?CT4X
  292.                    MJMP MP,?DW,%?CT3
  293.                    MLBL ?DE,%?CT3
  294.                    ?CT3 = ?CT3 - 1
  295.                    ?CT3X = ?CT3X - 1
  296.                    ?S3 = 1
  297.                    IFE ?CT3X
  298.                       ?S3 = 0
  299.                    ENDIF
  300.                 ELSE
  301.                    MJMP MP,?DW,%?CT4
  302.                    MLBL ?DE,%?CT4
  303.                    ?CT4 = ?CT4 - 1
  304.                    ?CT4X = ?CT4X - 1
  305.                    ?S4 = 1
  306.                    IFE ?CT4X
  307.                       ?S4 = 0
  308.                    ENDIF
  309.                 ENDIF
  310.              ENDIF
  311.          ENDIF
  312.          ENDM
  313. ..PAGE
  314. MLBL     MACRO P1,CT1,CT2
  315. &P1&CT1&CT2:
  316.          ENDM
  317.  
  318.  
  319. MALTLB   MACRO  P1,P2,P3
  320.          IFDEF &P1&P2
  321.             MLBL P3,P2
  322.          ELSE
  323.             MLBL P1,P2
  324.          ENDIF
  325.          ENDM
  326.  
  327.  
  328. MJMP     MACRO P1,P2,CT1,CT2,P3,CT3
  329.          IFNB <P3>
  330. &P3&CT3: J&P1  &P2&CT1&CT2
  331.          ELSE
  332.          J&P1  &P2&CT1&CT2
  333.          ENDIF
  334.          ENDM
  335.  
  336.  
  337. ..PAGE
  338. MJMPN    MACRO P1,P2,CT1,CT2,P3,CT3
  339.          IFIDN <P1>,<E>
  340.          MJMP  NE,P2,CT1,CT2,P3,CT3
  341.          ELSE
  342.          IFIDN <P1>,<Z>
  343.          MJMP  NZ,P2,CT1,CT2,P3,CT3
  344.          ELSE
  345.          IFIDN <P1>,<NE>
  346.          MJMP  E,P2,CT1,CT2,P3,CT3
  347.          ELSE
  348.          IFIDN <P1>,<NZ>
  349.          MJMP  Z,P2,CT1,CT2,P3,CT3
  350.          ELSE
  351.          IFIDN <P1>,<BE>
  352.          MJMP  NBE,P2,CT1,CT2,P3,CT3
  353.          ELSE
  354.          IFIDN <P1>,<NA>
  355.          MJMP  A,P2,CT1,CT2,P3,CT3
  356.          ELSE
  357.          IFIDN <P1>,<NBE>
  358.          MJMP  BE,P2,CT1,CT2,P3,CT3
  359.          ELSE
  360.          IFIDN <P1>,<A>
  361.          MJMP  NA,P2,CT1,CT2,P3,CT3
  362.          ELSE
  363.          IFIDN <P1>,<AE>
  364.          MJMP  NAE,P2,CT1,CT2,P3,CT3
  365.          ELSE
  366.          IFIDN <P1>,<NB>
  367.          MJMP  B,P2,CT1,CT2,P3,CT3
  368.          ELSE
  369.          IFIDN <P1>,<NAE>
  370.          MJMP  AE,P2,CT1,CT2,P3,CT3
  371.          ELSE
  372.          IFIDN <P1>,<B>
  373.          MJMP  NB,P2,CT1,CT2,P3,CT3
  374.          ELSE
  375.          IFIDN <P1>,<G>
  376.          MJMP  NG,P2,CT1,CT2,P3,CT3
  377.          ELSE
  378.          IFIDN <P1>,<NLE>
  379.          MJMP  LE,P2,CT1,CT2,P3,CT3
  380.          ELSE
  381.          IFIDN <P1>,<NG>
  382.          MJMP  G,P2,CT1,CT2,P3,CT3
  383.          ELSE
  384.          IFIDN <P1>,<LE>
  385.          MJMP  NLE,P2,CT1,CT2,P3,CT3
  386.          ELSE
  387.          IFIDN <P1>,<GE>
  388.          MJMP  NGE,P2,CT1,CT2,P3,CT3
  389.          ELSE
  390.          IFIDN <P1>,<NL>
  391.          MJMP  L,P2,CT1,CT2,P3,CT3
  392.          ELSE
  393.          IFIDN <P1>,<NGE>
  394.          MJMP  GE,P2,CT1,CT2,P3,CT3
  395.          ELSE
  396.          IFIDN <P1>,<L>
  397.          MJMP  NL,P2,CT1,CT2,P3,CT3
  398.          ELSE
  399.          IFIDN <P1>,<O>
  400.          MJMP  NO,P2,CT1,CT2,P3,CT3
  401.          ELSE
  402.          IFIDN <P1>,<NO>
  403.          MJMP  O,P2,CT1,CT2,P3,CT3
  404.          ELSE
  405.          IFIDN <P1>,<NS>
  406.          MJMP  S,P2,CT1,CT2,P3,CT3
  407.          ELSE
  408.          IFIDN <P1>,<S>
  409.          MJMP  NS,P2,CT1,CT2,P3,CT3
  410.          ELSE
  411.          IFIDN <P1>,<NP>
  412.          MJMP  P,P2,CT1,CT2,P3,CT3
  413.          ELSE
  414.          IFIDN <P1>,<P>
  415.          MJMP  NP,P2,CT1,CT2,P3,CT3
  416.          ELSE
  417.          IFIDN <P1>,<PO>
  418.          MJMP  PE,P2,CT1,CT2,P3,CT3
  419.          ELSE
  420.          IFIDN <P1>,<PE>
  421.          MJMP  PO,P2,CT1,CT2,P3,CT3
  422.          ELSE
  423.          IFIDN <P1>,<NC>
  424.          MJMP  C,P2,CT1,CT2,P3,CT3
  425.          ELSE
  426.          IFIDN <P1>,<C>
  427.          MJMP  NC,P2,CT1,CT2,P3,CT3
  428.          ELSE
  429.          MJMP  MP,?BADOP,CT1
  430.          ENDIF
  431.          ENDIF
  432.          ENDIF
  433.          ENDIF
  434.          ENDIF
  435.          ENDIF
  436.          ENDIF
  437.          ENDIF
  438.          ENDIF
  439.          ENDIF
  440.          ENDIF
  441.          ENDIF
  442.          ENDIF
  443.          ENDIF
  444.          ENDIF
  445.          ENDIF
  446.          ENDIF
  447.          ENDIF
  448.          ENDIF
  449.          ENDIF
  450.          ENDIF
  451.          ENDIF
  452.          ENDIF
  453.          ENDIF
  454.          ENDIF
  455.          ENDIF
  456.          ENDIF
  457.          ENDIF
  458.          ENDIF
  459.          ENDIF
  460.          ENDM
  461.